/**
 *  Copyright (C) 2008-2013  Telosys project org. ( http://www.telosys.org/ )
 *
 *  Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *          http://www.gnu.org/licenses/lgpl.html
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.telosys.common.output.writer;

import java.io.IOException;
import java.io.Writer;
import java.util.List;

import org.telosys.common.TelosysRuntimeException;
import org.telosys.util.beanwriter.BeanWriter;
import org.telosys.util.beanwriter.XmlBeanTranslator;

/**
 * 
 * @author Laurent GUERIN
 *  
 */
public class ListXmlWriter
{
    private final static String END_OF_LINE = "\n" ;

    //-----------------------------------------------------------------------------------
    public static void toXml(Writer writer, List<?> list, String sListTagName, String sElementTagName )
    {
        try {
            if (list == null)
            {
                writer.write( "<" + sListTagName + "/> <!-- List is NULL -->" );
            }
            else {
                
        		XmlBeanTranslator xmlWriter = new XmlBeanTranslator(true, sElementTagName);
        		//xmlWriter.setNullTag(null); // No Null Tag 
        		//xmlWriter.setNullTag("NullObject"); // Null Tag 
        		//xmlWriter.setWriteNullAttribute(false);
        		BeanWriter bw = new BeanWriter(writer, xmlWriter);
                
            	writer.write("<" + sListTagName + ">");
                //--- For each VO in the list ...
                for ( Object object : list )
                {
                	bw.writeObject(object, sElementTagName); // even  if null
                }
                writer.write(END_OF_LINE);
                writer.write("</" + sListTagName + ">" );
                writer.write(END_OF_LINE);
            }
            
	    } 
        catch (IOException ex)
	    {
	        throw new TelosysRuntimeException("IOException", ex);
	    }
        finally {
        }
    }

    //---------------------------------------------------------------------------------------------------------
    
}